抖音春晚红包百亿互动量级背后,火山引擎浮出水面
电商大促和春晚互动是中国互联网的两个流量巅峰,新的应用与玩法层出不穷,同时,也考验和显示了巨头的技术进阶与运维保障的实力。
刚刚过去的2021年春晚的互联网巨头主角是抖音,借着与2021年央视春晚独家互动合作,风头最劲的短视频App抖音完成了703亿次的红包互动。另外,抖音平台的春晚直播间累计观看人次12.21亿,抖音发拜年视频累计播放超506亿次。可以说,借助春晚,字节跳动初步完成了抖音社交化的第一次战役。
不过除了以往字节系熟稔和擅长的“增长”秘笈之外,这次百亿互动量级的活动,也是对抖音背后技术团队巨大的挑战。作为与飞书并列成为字节跳动“To B双引擎”的火山引擎,用它的云基础设施与云原生的弹性、无感知等能力,和抖音技术团队一起平稳应对了春晚活动百亿级流量大考。
CSDN近日采访了火山引擎团队技术负责人张淼,听他讲述抖音技术团队和火山引擎云原生团队应对百亿级流量挑战的经验和思考。
四个保障难点
具体的保障难点有:
• 时间短:在按照以往经验,春节春晚项目至少需筹备2-3个月,而这次留给抖音的时间却只有27天;
• 极致性能:数亿级别QPS(每秒查询率Query Per Second)请求抢红包;
• 资源缺:短时间内需要协调约12万台服务器完成整个活动支撑;
• 高可用:多场景容灾,人工判断、切换操作的时间成本较高问题,自动容灾挑战大;
融合线路 + 边缘计算,解决资源接入上时间紧张的挑战
春晚活动场景的流量主要包括各大APP的常规流量增长,口播场景的集中冷启动流量,以及红包活动流量。这些增长需求叠加后,是日常峰值流量的3倍以上,如何在短时间内为这些流量提供网络接入加速线路服务,是接入团队要解决的首要问题。
基于端云配合的融合加速线路方案,抖音等APP能够实现在短时间内引入多家商业动态CDN加速厂商的目标,迅速补齐加速线路容量上的缺口。在这个过程中,使用边缘+端全面覆盖的拨测能力,在短时间内完成对商业动态CDN的快速验证工作;自建动态加速作为融合线路中的主要提供方之一,上线半年内完成61条线路覆盖,支持灵活的L1/L2回源控制、专线/公网回源无缝切换,承载一半的容量需求;端云结合的流量控制能力,能够快速、灵活的将指定流量调度到指定线路,根据线路的容量、性能特点及各业务流量需求特点定制调度方案;在静态流量分配策略基础上,同时支持运行时探测线路优选、容灾等动态策略,进一步发挥融合线路优势,提升用户体验。
技术架构
春晚的流量洪峰经过各线路最终汇聚到IDC接入,这一层面如何在短时间内提供数倍于常态的资源需求,是接入团队面临的第二个挑战。
IDC接入网络资源主要包括各接入机房带宽,以及四、七层接入负载均衡集群的机器资源。在几周内仅依靠当时IDC的带宽、机器扩容满足上述增长需求是不现实的。根据需求特点,红包活动流量中有大量的新增业务逻辑适用于边缘计算部署,同时将活动流量通过边缘汇聚机房接入,也能够极大的减轻核心IDC机房的接入压力。在短时间内完成了边缘汇聚机房红包业务的就近接入,四、七层负载均衡的搭建、验证、引流工作,通过边缘+核心机房流量分治的方式,成功的支撑了活动场景的接入网络资源需求。
将红包雨计算服务下沉至边缘机房,实现用户就近接入,应对流量洪峰;在边缘汇聚机房,采用IaaS虚拟化技术,实现非活动业务快速切换,为PaaS服务以及红包雨计算服务提供算力。
离线资源拆解+在线混部方案 实现面向活动场景的快速部署能力
抖音技术团队和火山引擎云原生团队综合评估了平台历史数据和业务系统的压测结果,春晚峰值流量预估新增资源需求约为12万台服务器。
离线资源拆借方案,提供了一套面向活动场景的快速部署的能力。设置完在离线出让策略后,离线机器可在 5min 内转换成在线可用状态,服务弹性扩缩组件根据资源需求配置完成活动所有服务的统一等比例快速扩缩。
在线混部出让方案,使用Faas+Virtual Kubernetes 的技术方案做资源整合。在保证流量峰值时在线服务稳定性的基础上,配合单机维度的QOS管理和隔离手段,整合散落在多个集群中已经部署但未充分使用的闲置资源,并通过Pod维度的Warm up池,保证极致弹性的同时,有效缓解了任务冷启动带来的延时影响。该方案保障了春晚当天大量短视频投稿的码率转换、抽帧等任务,稳定供应了数十万核心的算力。
整体上,春晚前后短时间内对多个服务进行实例扩容和回收,高质量保障了春节活动顺利进行,同时大大减少新增服务器成本,大幅提升了 ROI。
云原生自研HTTP框架 提供高性能、易用的研发设施
除了对基础设施等资源的收拢和调用,字节跳动技术团队自研的Golang HTTP框架Hertz首次用于春晚大型活动上,即表现出超强的性能和稳定性。
Hertz正式发布和应用于2020年10月22日,春晚红包活动前已经累计吸引了60+服务(其中包括活动主会场等核心服务),内部自发地从往年基于Fasthttp方案转而直接基于Hertz框架。从结果来看,Hertz框架性能数据完全符合业务预期。
同时,为了全方位保障节日活动接入的稳定性,框架侧内部提前完成活动流量接入关键问题梳理,针对性地建设了一整套性能/稳定性测试体系,深度模拟活动流量特点,针对大并发、大包、重负载场景做了大量的测试和优化,将所有可能出现的异常问题提前暴露和解决,高强度地保障了框架质量。春晚当天由Hertz框架承载的服务峰值QPS达到千万级别(未统计物理机部署服务),线上无一例异常反馈。
通过ServiceMesh保障红包雨系统多服务、多机房协同
在春晚红包互动中,保障在线服务稳定性是微服务架构的核心目标。这包括应对正常的流量增长、活动瞬时流量、异常流量以及底层各类设施在异常时的自动恢复。
应对流量增长方面,Service Mesh提供了灵活的机房、集群调度能力和多种负载均衡能力,确保每个实例获得合适的负载,快速响应扩容带来的负载再平衡。固定的限流规则和动态的过载控制同时待命,有效防止突发流量造成系统雪崩。访问控制模块同时具备认证和鉴定功能,在入口处拒绝异常流量,保障正常流量的服务。最后,Service Mesh 出流量代理还提供了自动熔断能力,依据实时状况动态调节请求发送,助力系统在异常状态时的自动恢复。
Service Mesh已经具备了数万在线服务、数百万容器的规模,支持包括HTTP1.1/2、gRPC、thrift等RPC协议,及Mysql、Redis、Rocketmq等组件,基本覆盖了所有在线类型的流量。基于Service Mesh提供了统一、丰富的治理能力,包括服务发现、负载均衡、服务安全、流量安全、流量治理、tracing、mock等,相比于开源的Envoy代理,其性能提升十分明显,接入损耗极低。
自研Redis系统+高可用容灾架构+ByteGraph等,为红包雨服务提供高性能存储
春晚抢红包和拆红包对后端数据库系统压力巨大,为了降低对后端数据库的压力,缓存系统必不可少。
春晚活动期间,火山引擎采用自研架构的Redis系统提供缓存服务。火山引擎Redis系统采用集中化元数据存储的方式达到节点和集群性能海量扩展,并通过异步和多线程IO优化,将热点数据打散和智能搬迁,大大降低Redis的长尾时延,提升热点数据QPS。火山引擎Redis系统无论在集群数量、机器规模、QPS总量上都处于业界领先地位。在春晚红包雨活动期间,缓存系统系统单库峰值QPS达到数亿级别,通过极致的弹性扩展能力最大单库分片数接近2000片,支撑超过2.5PB数据。
在大规模分布式系统中通过消息队列进行异步削峰,也是有效应对海量流量冲击的手段。在红包雨活动中,火山引擎消息队列系统同样扮演了不可或缺的角色。火山引擎消息队列采用存储和计算分离架构,所有的持久化存储都放在池化存储中,由池化存储组件来保证数据的一致性和可靠性,以及相应的灾备和Geo-replication的能力,而计算层节点则可以保持本地无状态,专心处理消息队列系统的计算逻辑,并实现极致弹性扩展。
作为最关键的存储组件关系型数据库,火山引擎云数据库系统采用云原生架构设计,通过自主研发的高可用容灾架构、智能自适应限流、计算存储分离、日志与数据分离、日志即数据库、Multi-master、新型硬件(RDMA +AEP)等技术,提供了每秒读写QPS达数千万级,单库的写峰值达到360W QPS,读峰值达到500W QPS的能力,为红包雨活动期间抖音稳定运行保驾护航。
红包雨活动面临的一大难题是数亿用户复杂“关系”查询问题,抖音的用户关系数据是抖音产品形态和数据分发的中枢,如何存储海量关系并保证千万级的并发关系查询能在毫秒级返回,是系统架构领域的难题。对于这个社交网络,火山引擎自研了分布式的图数据库系统ByteGraph,用图(Graph)中点和边的数据模型来表达抖音的关系复杂多样的场景需求。系统通过几年的打磨,功能日趋完善性能逐渐稳定,在此次春晚活动中,顺利通过了单个集群瞬时最多接近5000万并发流量洪峰的考验。
对象存储在红包雨活动期间,为短视频内容提供可靠稳定存储。春节期间,数以亿计的用户通过抖音APP观看了大量短视频,这些短视频均存储在字节跳动纯自研的10EB级超大规模「对象存储TOS」服务中,其读写峰值带宽达接近10Tb/S,QPS接近300W/S。
全链路动态流量调度,支撑多场景容灾
对于春晚流量高峰场景,对流量进行分级治理及合理降级是调度层面的首要任务。基于BAM接口分级管理平台的业务流量分级信息,AppSettings + TNC + TTNet + HttpDNS在移动端请求的发起、域名解析等各阶段落地的多层降级手段,以及针对冷启场景的专项降级治理、分时间段降级配置,最终实现用户体验无明显损失的情况下,整场活动以平稳的流量波动度过6次口播冷启及红包活动的峰值叠加时刻。
抖音等APP的业务流量调度能力,在传统的域名解析调度能力基础上,基于统一的移动端网络库,支持APP ID、接口、用户ID等多维度的调度策略,能够实现绝大多数的流量合并、隔离等调度需求。此外,基于移动端配置的调度系统特性包括:十万分之一级别的流量切换精度、数亿级别在线客户端配置管理、千万级并发请求更新调度配置、3分钟配置更新90%、24h配置覆盖率99.5%。在春晚高并发大流量场景下,为局部容灾、整机房大规模容灾等场景预案提供了足够的能力支撑。
为应对容灾切换场景下人工判断、切换操作的时间成本较高问题,移动端调度为重点流量提供了更加智能的自动容灾能力:当端上发现当前接入点请求异常时,能够快速切换到对等接入点的IP或域名,使得故障场景对用户的影响时间降至1min内,极大的降低了故障场景下的用户体验损失。
初次大考从容不迫应对,证明了自己能力
张淼表示,“火山引擎今年是临危受命,为抖音春晚红包活动提供了技术支持,在有限时间内克服资源挑战,充分利用云原生的产品技术优势,采用领先的技术架构、创新产品解决方案,再加上追求极致的技术保障团队,构建超出春晚红包活动极限的并发环境,完美应对春晚这个‘世界级’的挑战。”
CSDN认为,历年来的春晚红包互动一直是中国技术场景中挑战最大的,火山引擎云原生团队初次出场,就从容不迫地应对了这次高并发、大流量的技术大考,向外界证明了自己的技术能力和服务可靠性,也让字节跳动在企业级服务市场进一步发展更有底气。
未来,火山引擎将如何开放能力,在企业级市场攻城略地,CSDN也会持续关注,拭目以待。